HDOJ 1290 【递推】献给杭电五十周年校庆的礼物

【题目描述】

http://acm.hdu.edu.cn/showproblem.php?pid=1290

###【思路】
和直线切割平面是一个道理,要想得到最多的平面,第i条直线就得与前i-1条直线相交,此时它自己被分割成i段,每段都把它所在的平面切成2块,所以对于平面,f[i]=f[i-1]+i;
平面切割空间时,第i个平面必须要与前i-1个平面全部相交,即自己被i-1条直线切割成f[i-1]个平面,每个平面把它所在的空间切成2块,所以对于空间,zone[i]=zone[i-1]+f[i-1]。
P.S.输出需要用long long。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include<stdio.h>
long long f[1100],zone[1100];
int main()
{
int n;
f[1]=2;
f[2]=4;
zone[1]=2;
zone[2]=4;
for (int i=3;i<1100;i++)
{
f[i]=f[i-1]+i;
zone[i]=zone[i-1]+f[i-1];
}
while (~scanf("%d",&n))
printf("%I64d\n",zone[n]);
return 0;
}
文章目录
  1. 1. 【题目描述】
|